feat(server): E2E 화면 비디오 녹화 MCP 도구 및 YAML 스텝 추가#79
Merged
Conversation
- start_video_recording / stop_video_recording 도구 (idb / adb screenrecord) - spawn 기반 장시간 프로세스, stop 시 SIGINT 후 Android는 adb pull - filePath는 cwd 하위로 제한 (path traversal 방지) - 서버 종료 시 stopAllRecordings 호출 (AppSession.stop + process exit)
- parser: startRecording(path?), stopRecording 스키마 - runner: executeStep 분기, outputDir/e2e-recording.mp4 기본 경로 - app-client: startRecording/stopRecording 메서드 (MCP 도구 호출) - e2e-yaml-reference (en/ko): 비디오 스텝 설명 및 카테고리 - AC7/AC8 체크
- video-recording: filePath cwd 밖 검증, stop 시 No active recording 반환 - parser-steps: startRecording/stopRecording 파싱 케이스
45분 초과로 job 취소 발생. E2E iOS와 동일하게 60분 적용
- 실패 시 스크린샷·로그 저장: 2분 타임아웃 (무한 대기 방지) - 아티팩트 업로드: 3분 타임아웃 - Android: adb logcat -d -t 3000으로 마지막 3000줄만 수집 (전체 덤프 후 tail 제거)
- idb ui tap이 Command timed out 시 1.5초 대기 후 1회 재시도 - e2e-ci-reliability.md에 원인·대응 정리 반영
- tap 직전 wait 500 추가, waitForText timeout 15s→20s (CI 에뮬 지연 대비)
- Step 8: testID #scroll-btn-20으로 scroll/tap/waitForText 통일 - Step 9: 탭 후 wait 300, waitForText에 selector 지정
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
E2E 화면 비디오 녹화 기능 (MCP 도구 + YAML 스텝)
제목(목적)
idb(iOS)와 adb(Android) 화면 녹화를 MCP 도구로 래핑하고, E2E YAML에서 startRecording/stopRecording 스텝으로 사용할 수 있게 한다.
작업 내용
start_video_recording/stop_video_recording도구를 추가했다. spawn으로 idb video 또는 adb shell screenrecord를 띄우고, stop 시 SIGINT 후 Android는 adb pull로 호스트 경로에 저장한다. filePath는 cwd 하위로 제한해 path traversal을 막았고, 서버 종료 시 stopAllRecordings를 호출해 좀비 프로세스를 방지한다.startRecording(path 선택),stopRecording스텝을 추가했고, app-client에 해당 메서드를 두어 MCP 도구를 호출한다. path 생략 시 outputDir/e2e-recording.mp4를 쓰며, teardown에서 stopRecording을 두면 스텝 실패 시에도 녹화가 정리된다. e2e-yaml-reference(en/ko)에 비디오 스텝 설명을 보강했다.docs/e2e-comparison.md의 비디오 녹화 행을 ✓로 바꿨고, 계획서 AC1–AC10을 반영했다.
CI 안정화: E2E Android job 타임아웃 45분→60분, 실패 시 스크린샷·로그·아티팩트 단계에 2분·3분 타임아웃 추가, Android logcat은
-t 3000으로 수집 제한. iOS tap이 idb 지연으로 간헐 타임아웃할 때를 위해Command timed out시 1.5초 대기 후 1회 재시도 적용. Android E2E에서 "버튼 20 (1)" waitForText 간헐 실패에 대해 Step 8은 testID#scroll-btn-20으로 scroll/tap/waitForText를 통일해 탭 오인을 막고, Step 9는 탭 후 wait 300과 waitForText selector 지정으로 상태 반영 여유를 둠. step1(첫 tap)에서 실패할 때를 위해 setup 직후 wait 500·첫 스텝을 waitForText('Count: 0')로 바꾸고, Android tap 실패 시 1.5초 대기 후 1회 재시도 적용. e2e-ci-reliability.md에 원인·대응 정리.